package com.git.hui.yinshua.biz.pay.service.convert;

import com.git.hui.yinshua.api.model.order.PayTypeEnum;
import com.git.hui.yinshua.biz.pay.dao.entity.OrderPaymentEntity;
import com.git.hui.yinshua.biz.pay.dao.entity.OrderRefundEntity;
import com.git.hui.yinshua.biz.rest.models.order.rsp.PaymentDto;
import com.git.hui.yinshua.biz.rest.models.order.rsp.RefundDto;
import com.git.hui.yinshua.biz.util.PriceUtil;

/**
 * 支付单实体转换工具类
 *
 * @author YiHui
 * @date 2024/9/9
 */
public class PaymentConvert {

    public static PaymentDto toPayment(OrderPaymentEntity entity) {
        PaymentDto dto = new PaymentDto();
        dto.setPaymentId(String.valueOf(entity.getId()));
        dto.setOrderId(entity.getOrderId());
        dto.setOrderAmount(PriceUtil.toYuanPrice(entity.getOrderAmount()));
        dto.setPayAmount(PriceUtil.toYuanPrice(entity.getPayAmount()));
        dto.setAcutalAmount(PriceUtil.toYuanPrice(entity.getActualAmount()));
        dto.setCurrency(entity.getCurrency());
        dto.setPayStatus(entity.getPayStatus());
        dto.setPayType(PayTypeEnum.typeOf(entity.getPayType()).getDesc());
        dto.setOutId(entity.getUuid());
        dto.setThirdBillCode(entity.getThirdTransCode());
        dto.setTradeStatus(entity.getTradeStatus());
        dto.setPrePayId(entity.getPrePayId());
        dto.setWxId(entity.getOpenId());
        dto.setRemark(entity.getRemark());
        return dto;
    }

    public static RefundDto toRefund(OrderRefundEntity refund) {
        RefundDto dto = new RefundDto();
        dto.setRefundId(String.valueOf(refund.getId()));
        dto.setOrderId(refund.getOrderId());
        dto.setPaymentId(String.valueOf(refund.getPaymentId()));
        dto.setRefundAmount(PriceUtil.toYuanPrice(refund.getRefundAmount()));
        dto.setCurrency(refund.getCurrency());
        dto.setNotes(refund.getNotes());
        dto.setRefundStatus(refund.getRefundStatus());
        dto.setWxRefundId(refund.getWxRefundId());
        dto.setThirdBillCode(refund.getThirdTransCode());
        dto.setOutId(refund.getUuid());
        dto.setRefundTime(refund.getRefundTime());
        dto.setCreateTime(refund.getCreateAt());
        dto.setRemark(refund.getRemark());
        return dto;
    }
}
